import pandas as pd


def process_excel_column_for_mysql_in(file_path, column_name='课程讲id'):
    """
    从Excel文件中获取指定列，去重后生成MySQL IN查询用的字符串

    Args:
        file_path (str): Excel文件路径
        column_name (str): 列名，默认为'课程讲id'

    Returns:
        str: 逗号分隔的字符串，可直接用于MySQL IN查询
    """
    type_a = {
        '试卷快照ID':int
    }
    try:
        # 读取Excel文件
        df = pd.read_excel(io=file_path, dtype=type_a)

        # 检查列是否存在
        if column_name not in df.columns:
            print(f"错误: 列 '{column_name}' 不存在")
            print(f"可用的列名: {list(df.columns)}")
            return None

        # 获取指定列并去除空值
        column_data = df[column_name].dropna()

        # 去重
        unique_data = column_data.drop_duplicates()

        # 转换为字符串并生成逗号分隔的字符串
        # 如果是数字类型，直接转换；如果是字符串类型，需要加引号
        if pd.api.types.is_numeric_dtype(unique_data):
            # 数字类型，直接转换
            result_string = ','.join(unique_data.astype(str))
        else:
            # 字符串类型，需要加单引号
            result_string = ','.join([f"'{str(item)}'" for item in unique_data])

        print(f"原始数据行数: {len(column_data)}")
        print(f"去重后行数: {len(unique_data)}")
        print(f"生成的IN查询字符串:")
        print(result_string)

        return result_string

    except FileNotFoundError:
        print(f"错误: 找不到文件 '{file_path}'")
        return None
    except Exception as e:
        print(f"处理过程中出现错误: {str(e)}")
        return None


# 使用示例
if __name__ == "__main__":
    # 替换为你的Excel文件路径
    file_path = ("D:\\project_file\\老卷下线\\运营目录使用老卷标记.xlsx")  # 请替换为实际的文件路径

    # 处理数据
    mysql_in_string = process_excel_column_for_mysql_in(file_path, '试卷快照ID')

    if mysql_in_string:
        # 示例：如何在SQL查询中使用
        sql_query = f" ({mysql_in_string})"
        print(f"\nSQL查询示例:")
        print(sql_query)

